package be.ipl.albums.usecasesimpl;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import be.ipl.albums.dao.AlbumDao;
import be.ipl.albums.domaine.Album;
import be.ipl.albums.domaine.Album.Categorie;
import be.ipl.albums.exceptions.AlbumExistantException;
import be.ipl.albums.usecases.GestionAlbums;

@Stateless
public class GestionAlbumsImpl implements GestionAlbums {

	@EJB
	private AlbumDao adao;

	@Override
	public List<Album> listeOrdonnee() {
		return adao.listeOrdonnee();
	}

	@Override
	public List<Album> lister(Categorie categorie) {
		return adao.lister(categorie);
	}

	@Override
	public List<Album> listerDepuis(Calendar date) {
		return adao.listerDepuis(date);
	}

	@Override
	public List<Album> listeDuJour() {
		return adao.listeDuJour(new GregorianCalendar());
	}

	@Override
	public List<Album> lister(String mot) {
		return adao.lister(mot);
	}

	@Override
	public Album ajouter(Album album) {
		Album a = adao.rechercher(album.getPK());
		if (a != null) {
			if (a.getDebit() > album.getDebit()
					|| (a.getDebit() == album.getDebit() && a.getTaille() > album
							.getTaille())) {
				throw new AlbumExistantException();
			}
			return adao.mettreAJour(album);
		}
		return adao.enregistrer(album);
	}

}
